package jdk.thread.tool;

import lombok.SneakyThrows;

import java.util.concurrent.Semaphore;


/**
 * 像有数量限制的共享锁？例子有五个坑位的厕所！！！
 * 主要的操作有acquire和release，获取和释放！！
 * 如new Semaphore（3)则同时间内只能有三个线程获取成功！！！
 * 剩下的则要等待前面的线程释放后才能获取！！
 */
public class SemaphoreTest {

    public static void main(String[] args) throws InterruptedException {
        Semaphore semaphore = new Semaphore(3);




        for(int i=0; i<6; i++){
            new Thread() {
                @SneakyThrows
                @Override
                public void run() {
                    semaphore.acquire();
                    System.out.println(getName()+"-使用中。。。。。");
                    Thread.sleep(2000);
                    System.out.println(getName()+"-释放中。。。。。");
                    semaphore.release();
                }
            }.start();
        }
    }
}
